/*
 * @lc app=leetcode.cn id=141 lang=javascript
 *
 * [141] 环形链表
 */

// @lc code=start
/**
 * Definition for singly-linked list.
 * function ListNode(val) {
 *     this.val = val;
 *     this.next = null;
 * }
 */

/**
 * 用快慢指针来做这个题目
 * 快慢指针： 如果有环，快指针一定能追上慢指针
 * 同样的快慢指针可以用来寻找链表的中间节点，因为快指针走到null时候，慢指针正好走到中间位置
 * @param {ListNode} head
 * @return {boolean}
 */
var hasCycle = function(head) {
    if(!head) return false;
    // 定义快慢指针
    let pre = head;
    next = head.next
    while(pre != next && next && next.next){
        // 慢指针走一步，快指针走两步
        pre = pre.next;
        next = next.next.next;
    }
    
    return pre === next
};
// @lc code=end

